// pages/edit-name/edit-name.ts
import { userEdit } from '../../../api/user.js';
import userManager from '../../../utils/userManager.js';

Page({
  data: {
    currentName: '',
    newName: '',
  },

  onLoad() {
    // 从缓存加载当前用户名
    const currentName = userManager.getUserDisplayName();
    this.setData({ currentName });
  },

  onInput(e: any) {
    this.setData({ newName: e.detail.value });
  },

  async submitName() {
    const newName = this.data.newName.trim();
    
    // 验证输入
    if (!newName) {
      wx.showToast({
        title: '请输入新姓名',
        icon: 'none',
      });
      return;
    }
    
    if (newName.length < 2) {
      wx.showToast({
        title: '姓名至少需要2个字符',
        icon: 'none',
      });
      return;
    }
    
    if (newName.length > 30) {
      wx.showToast({
        title: '姓名不能超过30个字符',
        icon: 'none',
      });
      return;
    }
    
    // 检查是否与当前名称相同
    if (newName === this.data.currentName) {
      wx.showToast({
        title: '新姓名与当前姓名相同',
        icon: 'none',
      });
      return;
    }
    
    try {
      wx.showLoading({ title: '保存中...' });
      
      // 调用修改用户信息接口
      const res = await userEdit({
        nickname: newName
      });
      
      wx.hideLoading();
      
      if (res.status === 200) {
        // 姓名修改成功，刷新用户信息
        await userManager.refreshAfterUpdate('姓名修改');
        
        wx.showToast({
          title: '姓名修改成功',
          icon: 'success',
        });
        
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      } else {
        throw new Error(res.msg || '修改失败');
      }
    } catch (error: any) {
      wx.hideLoading();
      console.error('修改姓名失败:', error);
      
      wx.showToast({
        title: typeof(error) === 'string' ? error : (error?.msg || '修改失败，请重试'),
        icon: 'none'
      });
    }
  },
});

